#include<iostream>
#include<fstream>
#include<cmath>
#include<cstdlib>
#include<ctime>

using namespace std;

/*
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif 
#endif
*/

/** The First Function **/
int ImageIntensityDistribution(float* imageIntensity,
			       float* imageLocation ,
			       int imageLength,
			       bool isOutputFile);

int IID2(float* imageIntensity,
	 float* imageLocation,
	 int imageLength,
	 bool isOutputFile);

/** The Second Function **/
int SourceSignalGeneration(float* signal,
			   float* imageIntensity, 
			   float* imageLocation,
			   int imageLength,
			   float samplingDistance,
			   int coherentLength,
			   int numberOfSignal,
			   bool isOutputFile);

/** The Third Function **/
int DelayMatrix(float* delay, 
		float* imageLocation, 
		int imageLength, 
		float* detectorLocation, 
		int numberOfDetector, 
		float distance,
		bool isOutputFile);

/** The Fourth Function **/
int RecievedSignalGeneration(float* receivedSignal,
			     float* signal,
			     float* delay, 
			     int imageLength,
			     int numberOfDetector,
			     float samplingDistance,
			     int numberOfReceivedSignal,
			     float* detectorLocation,
			     int numberOfSignal,
			     int distance,
			     int coherentLength,
			     bool isOutputFile);

/** The Fifth Function **/
int HolographicImaging(float* image, 
		       float* imageLocation,
		       int imageLength,
		       float* receivedSignal, 
		       int numberOfDetector,
		       int numberOfReceivedSignal,
		       float* detectorLocation,
		       float samplingDistance, 
		       float distance5,
		       float* delay,
		       int coherentLength,
		       int numberOfSignal,
		       bool isOutputFile);

/*
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
*/
